home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-10-30 | 91.6 KB | 2,662 lines |
-
-
-
-
-
-
-
-
- Appendix A
-
- UNIFORTH VOCABULARY LIST
-
-
-
- Listed on the next pages are definitions of all of the words
- available to the user after invoking UNIFORTH. The words are
- presented in alphabetical order. The first line of each entry
- consists of a symbolic description of the action of a word, the
- interpreter characteristics, the level of word's standardization,
- and the word's pronounciation.
-
- The word action is shown in abbreviated form by: symbols
- representing input parameters, three dashes for the word place-
- ment, and any parameters that might be left on the stack. The
- symbols used are:
-
- n,n1,n2 ... 16-bit integer values
- u,u1,u2 ... 16-bit unsigned integer values
- d,d1,d2 ... 32-bit integer values
- ud,ud1,ud2 ... 32-bit unsigned integer values
- x,x1,x2 ... 32-bit floating point values
- b,c 8-bit values
- cccc,ssss character strings
-
- The interpreter characteristics are given below.
-
- C The word may be used only within a colon definition.
-
- E The word should be executed; it may not normally be
- compiled within a colon-definition.
-
- I The word has immediate action, even when a colon word is
- being defined.
-
- Words defined by the FORTH-83 Standards Team or by FIG-FORTH
- essentially follow their descriptions. The standardization
- levels are given below.
-
- F The word is part of the FORTH-83 Standard.
-
- G The word is part of FIG-FORTH.
-
- U The word is unique to UNIFORTH.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-2
-
-
-
-
- ! n addr --- F "store"
- Store n at address.
-
- !CSP
- Save the stack position in CSP. Used as part of the compi-
- ler security.
-
- !DATE --- U
- Store the date into time-keeping buffer CLKADR. The system
- will prompt you for input.
-
- !TIME --- U
- Store the time into time-keeping buffer CLKADR. The system
- will prompt you for input.
-
- # ud1 --- ud2 F "sharp"
- The remainder of ud1 divided by BASE is converted to an
- ASCII character and appended to the output string towards
- lower memory addresses. Result ud2 is the quotient after
- division by BASE and is maintained for further processing.
- Used between <# and #>.
-
- #> d --- addr n F "sharp-greater"
- End pictured numeric output conversion. Drop d, leaving the
- text address and character count (as suitable for TYPE).
-
- #BUFF --- adr
- A variable containing the number of disk buffers allocated
- to the system.
-
- #S ud --- 0 0 F "sharp-s"
- Convert all digits of an unsigned 32-bit number ud, adding
- each to the pictured numeric output string, until quotient
- is zero. A single zero is added to the output string if the
- number was initially zero. Use only between <# and #>.
-
- #TIB --- adr F
- A variable containing the number of bytes in the text input
- buffer.
-
- $;; U
- basic case branch terminator word, compiled by ;; .
-
- $<: U
- Basic case branch entry word, compiled by <:.
-
- $=: U
- Basic case branch entry word, compiled by =: .
-
- $>: U
- Basic case branch entry word, compiled by >:.
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-3
-
-
- $CASE U
- Basic case beginning word, compiled by CASE.
-
- ' --- addr F,I "tick"
- Used in the form:
- ' <name>
- Leave the code field address of the next word accepted from
- the input stream. An error condition exists if not found
- after a search of the FORTH vocabulary. Within a colon-
- definition ' <name> is identical to [ ' <name> ] LITERAL.
-
-
- ( F,I "paren"
- Used in the form:
- ( ccc)
- Accept and ignore comment characters from the input stream,
- until the next right parenthesis. As a word, the left
- parenthesis must be followed by one blank. It may be freely
- used while executing or compiling. An error condition
- exists if the input stream is exhausted before the right
- parenthesis. The right parenthesis is pronounced "close-
- paren"
-
- (+LOOP) n --- G
- The run-time procedure compiled by +LOOP, which increments
- the loop index by n and tests for loop completion. See
- +LOOP.
-
- (.") G
- The run-time procedure, compiled by ." which transmits the
- following in-line text to the selected output device. See
- ."
-
- (;CODE) G
- The run-time procedure, compiled by ;CODE, that rewrites the
- code field of the most recently defined word to point to the
- following machine code sequence. See ;CODE.
-
- (DO) C,G
- The run-time procedure compiled by DO which moves the loop
- control parameters to the return stack. See DO.
-
- (FIND) addr1 addr2 --- pfa b tf (ok) G
- addr1 addr2 --- ff (bad)
- Searches the dictionary starting at the name field address
- addr2, matching to the text at addr1. Returns parameter
- field address, length byte of name field and boolean true
- for a good match. If no match is found, only a boolean
- false is left.
-
- (LATEST) adr1 --- adr2 adr3 U
- Searching at vocabulary line adr1, return latest word
- address in vocabulary (adr2) and a pointer to the correct
- link thread (adr3).
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-4
-
-
-
- (LINE) n1 n2 --- addr count G
- Convert the line number n1 and the screen n2 to the disk
- buffer address containing the data. The count left on the
- stack always is 64, the full line text length.
-
- (LOOP) G
- The run-time procedure compiled by LOOP which increments
- the loop index and tests for loop completion. See LOOP.
-
- (NUMBER) adr --- d G
- Part of the numeric conversion process. Called by NUMBER.
-
- (VALUE) addr1 --- n U
- Convert the ASCII text beginning at addr1+1 with regard to
- BASE. The converted 16-bit value n is left on the stack.
-
- * n1 n2 --- n3 F "times"
- Leave the arithmetic product of n1 times n2.
-
- */ n1 n2 n3 --- n4 F "times-divide"
- Multiply n1 by n2, divide the result by n3 and leave the
- quotient n4. n4 is rounded toward zero. The product of
- n1 times n2 is maintained as an intermediate 32-bit value
- for greater precision than the otherwise equivalent
- sequence: n1 n2 * n3 /
-
- */MOD n1 n2 n3 --- n4 n5 F "times-divide-mod"
- Multiply n1 by n2, divide the result by n3 and leave the
- remainder n4 and quotient n5. A 32-bit intermediate result
- is used as for */, and the quotient is rounded toward zero.
- The remainder has the same sign as the divisor, n1.
-
- + n1 n2 --- n3 F "plus"
- Leave the arithmetic sum of n1 plus n2.
-
- +! n addr --- F "plus-store"
- Add n to the 16-bit value at the address, by the convention
- given for +.
-
- +@ n1 n2 --- n3 SYSTEM block 35 U
- Add n1 to n2 to create an address. Fetch the contents of
- that address.
-
- +DISK U
- Turn on text file echo. Uses channel B.
-
- +LOOP n --- F,I "plus-loop"
- Add the signed increment n to the loop index. Return execu-
- tion to the corresponding DO until the new index is
- incremented across the boundary of limit-1 and limit. Upon
- exit from the loop, discard the loop control parameters.
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-5
-
-
- +ORIGIN n --- addr G
- Leave the memory address relative by n to the origin
- parameter area. n is the minimum address unit, either byte
- or word. This definition is used to access or modify the
- boot-up parameters at the origin area.
-
- +PRINTER U
- Enable echo to the printer as well as any current output
- device.
-
- , n --- F "comma"
- Allot two bytes in the dictionary, storing n there.
-
- - n1 n2 --- n3 F "minus"
- Subtract n2 from n1 and leave the difference n3.
-
- --> G,I "arrow"
- Continue interpretation with the next sequential block. May
- be used within a definition.
-
- -ES --- n U
- Leave the negative of the system element size on the data
- stack. For 16-bit systems, leaves -2.
-
- -FIND --- pfa b tf (found) G
- --- ff (not found)
- Accepts the next text word (delimited by blanks) in the
- input stream to HERE, and searches the CONTEXT and then
- CURRENT vocabularies for a matching entry. If found, the
- dictionary entry's parameter field address, its length byte,
- and a boolean true is left. Otherwise, only a boolean false
- is left.
-
- -ROT n1 n2 n3 --- n3 n1 n2 U
- Rotate the top stack value to the third stack position.
- Inverse operation to ROT.
-
- -TRAILING addr n1 --- addr n2 F "dash-trailing"
- The character count n1 of a text string beginning at addr is
- adjusted to exclude trailing blanks. An error condition
- exists if n1 is negative.
-
- . n --- F "dot"
- Display n converted according to BASE in a free-field format
- with one trailing blank. Display only a negative sign.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-6
-
-
- ." F,I "dot-quote"
- Interpreted or used in a colon-definition in the form:
- ." cccc"
- Accept the following text from the input stream, terminated
- by " (double-quote). If executing, transmit this text to
- the selected output device. If compiling, compile so that
- later execution will transmit the text to the selected
- output device. At least 127 characters are allowed in the
- text. If the input stream is exhausted before the
- terminating double-quote, an error condition exists.
-
- .( F
- Analogous to dot-quote, except the string is terminated with
- a right-paren. Execute mode only.
-
- .DATE --- U
- Print the date on the current output devices in the form
- dd-mmm-yy.
-
- .FSIZE --- U
- Display the current file's size in bytes
-
- .LINE line scr --- G
- Print on the terminal device, a line of text from the disk
- by its line and screen number. Trailing blanks are
- suppressed.
-
- .R n1 n2 --- G
- Print the number n1 right aligned in a field whose width is
- n2. No following blank is printed.
-
- .S --- U
- Non-destructive print of the data stack contents.
-
- .TIME --- U
- Print the time on the current output devices in the form
- HH:MM:SS.
-
- / n1 n2 --- n3 F "divide"
- Divide n1 by n2 and leave the quotient n3. n3 is rounded
- toward zero.
-
- /MOD n1 n2 --- n3 n4 F "divide-mod"
- Divide n1 by n2 and leave the remainder n3 and quotient n4.
- n3 has the same sign as n1. n4 is rounded towards zero.
-
- 0 --- 0 G
- Leave the constant 0 on the stack.
-
- 0< n --- flag F "zero-less"
- True if n is less than zero (negative).
-
- 0<= n --- flag U
- True if n is less than or equal to zero.
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-7
-
-
-
- 0<> n --- flag U
- True if n is not equal to zero.
-
- 0= n --- flag F "zero-equals"
- True is n is zero.
-
- 0> n --- flag F "zero-greater"
- True if n is greater than zero.
-
- 0>= n --- flag U
- True if n is greater than or equal to zero.
-
- 0BRANCH f --- G
- The run-time procedure to conditionally branch. If f is
- false, the following in-line parameter is added to the
- interpretive pointer to branch ahead of back. Compiled by
- IF, UNTIL and WHILE.
-
- 1 --- 1 G
- Leave the constant 1 on the stack.
-
- 1+ n --- n+1 F "one-plus"
- Increment n by one, according to the operation for +.
-
- 1+! addr --- U
- Increment the contents of addr by 1.
-
- 1- n --- n-1 F "one-minus"
- Decrement n by one, according to the operation minus.
-
- 1-! addr --- U
- Decrement the contents of addr by 1.
-
- 1.E1 --- n1 U
- The floating point constant 10.0 .
-
- 2 --- 2 G
- Leave the constant 2 on the stack.
-
- 2! d addr --- F "two-store"
- Store d in 4 consecutive bytes beginning at addr, as for a
- double number.
-
- 2* n1 --- n2 G
- Multiply n1 by 2 (signed).
-
- 2+ n --- n+2 F "two-plus"
- Increment n by two, according to the operation for +.
-
- 2+! addr --- U
- Increment the contents of addr by 2.
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-8
-
-
- 2- n --- n-2 F "two-minus"
- Decrement n by two, according to the operation for minus.
-
- 2-! addr --- U
- Decrement the contents of addr by 2.
-
- 2/ n1 --- n2 U
- Divide n1 by 2 (signed).
-
- 2@ addr --- d F "two-fetch"
- Leave on the stack the contents of the four consecutive
- bytes beginning at addr, as for a double number.
-
- 2>R d1 --- F
- Remove the topmost 32-bit value from the data stack and
- place it on the return stack.
-
- 2CONSTANT d --- F "two-constant"
- A defining word used in the form:
- d 2CONSTANT <name>
- to create a dictionary entry for <name>, leaving d in its
- parameter field. When <name> is later executed, d will be
- left on the stack.
-
- 2DROP d --- F "two-drop"
- Drop the top double number on the stack.
-
- 2DUP d --- d d F "two-dup"
- Duplicate the top double number on the stack.
-
- 2OVER d1 d2 --- d1 d2 d1 F "two-over"
- Leave a copy of the second double number on the stack.
-
- 2R> --- d1 F
- Remove the topmost 32-bit value from the return stack and
- place it on the data stack.
-
- 2ROT d1 d2 d3 --- d2 d3 d1 F "two-rote"
- Rotate the third double number to the top of the stack.
-
- 2SWAP d1 d2 --- d2 d1 F "two-swap"
- Exchange the top two double numbers on the stack.
-
- 2VARIABLE F "two-variable"
- Used in the form:
- 2VARIABLE <name>
- Create a dictionary entry for <name> and allocate 4 bytes
- for storage in the parameter field. When <name> is later
- executed, it will leave the address of the first byte of its
- parameter field on the stack.
-
- 3 --- n G
- Leave the constant 3 on the stack.
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-9
-
-
- 4+ n1 --- n2 U
- Add 4 to the top stack value.
-
- 4- n1 --- n2 U
- Subtract 4 from the top stack value.
-
- 8* n1 --- n2 U
- Multiply n1 by 8 (3-bit left shift).
-
- : F "colon"
- A defining word used in the form:
- : <name> . . . ;
- Create a dictionary entry for <name>, and set compile mode.
- Words thus defined are called 'colon-definitions'. The
- compilation addresses of subsequent words from the input
- stream which are not immediate words are stored into the
- dictionary to be executed when <name> is later executed.
- IMMEDIATE words are executed as encountered. If a word is
- not found after a search of the vocabulary, conversion and
- compilation of a literal number is attempted, with regard to
- the current BASE; that failing, an error condition exists.
-
- ; F,I,C "semi-colon"
- Terminate a colon definition and stop compilation. If
- compiling from mass storage and the input stream is
- exhausted before encountering ';' an error condition exists.
-
- ;; U,I
- Terminating word of a satisfied CASE branch. Branches to
- just after CASEND.
-
- ;CODE U,I
- Used in the form:
- : cccc . . . ;CODE . . . END-CODE
- Stop compilation and terminate a new defining word cccc by
- compiling (;CODE). Assemble the remaining mnemonics until
- reaching END-CODE. When cccc is later executed in the form:
- cccc <name>
- the word <name> will be created with its execution procedure
- given by the machine instructions following ;CODE. That is,
- when <name> is executed, it does so by jumping to the code
- after ;CODE of cccc. An existing defining word (such as
- CREATE) must exist in cccc prior to ;CODE.
-
- ;S G
- Stop interpretation of a screen.
-
- < n1 n2 --- flag F "less-than"
- True if n1 is less than n2. Two special cases must be
- considered. ' -32768 32767 <' must return true, and '-32768
- 0' must be distinguished.
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-10
-
-
- <# F "less-sharp"
- Initialize pictured numeric output. The words:
- <# ## #S HOLD SIGN #>
- can be used to specify the conversion of a double- precision
- number into an ASCII character string stored in right-to-
- left order.
-
- <: U
- Start a less-than conditional in the case statement.
-
- << U
- Mark the current stack position. Used in conjunction with
- >> to fill an array.
-
- <= n1 n2 --- flag U
- True if n1 is less than or equal to n2.
-
- <> n1 n2 --- flag U
- Compare n1 to n2. If they are not equal, leave a true
- flag; otherwise, leave zero.
-
- = n1 n2 --- flag F "equals"
- True if n1 is equal to n2.
-
- =: n1 --- U,I
- Begin a case comparison. If satisfied, execute the words
- following =:. Otherwise, jump to the word following the
- next ;; .
-
- =CELLS n1 --- n1 U
- Add 1 if necessary to make n1 an even number.
-
- > n1 n2 --- flag F "greater-than"
- True if n1 is greater than n2.
-
- >= n1 n2 --- flag U
- True if n1 is greater than or equal to n2.
-
- >> U
- Used in the form:
- << n1 n2 ... nn addr >>
- this word stores all parameters n1, n2, ...nn into the array
- starting at addr with n1 as the first element.
-
- >BODY adr1 --- adr2 F
- Move from the code field address of a word to the parameter
- field address (body).
-
- >IN --- addr F "to-in"
- Leave the address of a variable which contains the present
- character offset within the input stream {0...1023} Note:
- see WORD ( ." FIND
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-11
-
-
- >LINK adr1 --- adr2 F
- Move from the code field address of a word to its link field
- address.
-
- >NAME adr1 --- adr2 F
- Move from the code field address of a word to its name field
- address.
-
- >R n --- F,C "to-r"
- Transfer n to the return stack. Every >R must be balanced
- by a R> in the same control structure nesting level of a
- colon-definition.
-
- ? addr --- F "question-mark"
- Display the number at address, using the format of 'dot'.
-
- ?ALIGN --- U
- Force the dictionary pointer to an even address.
-
- ?BASE U
- Print the current base in decimal.
-
- ?BLK --- U
- Print the last accessed block in base 10.
-
- ?COMP G
- Issue error message if not compiling.
-
- ?CSP G
- Issue error message if stack position differs from the value
- saved in CSP.
-
- ?DUP n --- n (n) F "query-dup"
- Duplicate n if it is non-zero.
-
- ?ERROR f n --- G
- Issue an error message number n, if the boolean flag is
- true.
-
- ?EXEC G
- Issue an error message if not executing.
-
- ?KEY --- n U
- Check to see if a key has been struck on the keyboard. If
- so, leave the ASCII value; otherwise, leave a zero.
-
- ?LOADING G
- Issue an error message if not loading.
-
- ?PAIRS n1 n2 --- G
- Issue an error message if n1 does not equal n2. The message
- indicates that compiled conditionals do not match.
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-12
-
-
- ?SAVE adr --- adr U
- Flush buffer to disk if it has been updated. Used by SAVE-
- BUFFERS.
-
- ?STACK G
- Issue an error message if the stack is out of bounds.
-
- ?TERMINAL --- f G
- Perform a test of the terminal keyboard for actuation of any
- key. A true flag indicates actuation.
-
- @ addr --- n F "fetch"
- Leave on the stack the number contained at addr.
-
- @! n addr --- U
- Fetch the contents of addr and use those contents as the
- address into which to store n. (indirect addressing)
-
- @+ n1 addr --- n2 U
- Fetch the contents of addr and add to n1.
-
- A' --- U
- Used in the form:
- A' c
- Leave the ASCII code for character c on the stack, or
- compile into the dictionary if in compile mode.
-
- ABORT F
- Clear the data and return stack, setting execution mode.
- Return control to the terminal.
-
- ABORT" flag --- F "abort-quote"
- Used in the form:
- flag ABORT" cccc"
- When later executed, if flag is true the characters cccc,
- delimited by the close-quote, are displayed and then a
- abort sequence that includes ABORT is performed. If flag is
- false, the flag is dropped and execution continues. The
- blank following ABORT" is not part of cccc.
-
- ABS n1 --- n2 F "absolute"
- Leave the absolute value of a number.
-
- AGAIN addr n --- G
- Used in a colon-definition in the form:
- BEGIN . . . AGAIN
- At run-time, AGAIN forces execution to return to
- corresponding BEGIN. There is no effect on the stack.
- Execution cannot leave this loop (unless R> DROP is executed
- one level below).
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-13
-
-
- ALLOT n --- F "allot"
- Allocate n bytes in the dictionary. The address of the next
- available dictionary location is updated accordingly.
-
- AND n1 n2 --- n3 F
- Leave the bitwise logical 'and' of n1 and n2.
-
- ARRAY U
- A defining word used in the form:
- n ARRAY <name>
- create a buffer n cells long (but not preset to zero). When
- <name> is subsequently executed, it leaves the address of
- the first element.
-
- ASSEMBLER F,I
- The name of the assembler vocabulary. Execution makes
- ASSEMBLER the CONTEXT vocabulary. ASSEMBLER is immediate,
- so it will execute during the creation of a colon-
- definition, to select this vocabulary at compile time.
-
- AUTOLOAD --- adr U
- A variable containing the block number you wish to be
- automatically loaded when invoking UNIFORTH.
-
- B' --- n U
- Interpret the next number in base 2 (binary), regardless of
- the current base.
-
- B. n --- U
- Display the number in base 2 (binary), regardless of the
- current base.
-
- B/BUF --- n G
- Leave the number of bytes per buffer on the stack (1024).
-
- BACK addr --- G
- Calculate the backward branch offset from HERE to addr and
- compile into the next available dictionary memory address.
-
- BASE --- addr F
- Leave the address of a variable containing the current
- input-output numeric conversion base. {2..70}
-
- BASE' --- U
- A defining word used to create temporary base conversion
- words.
-
- BASE. --- U
- A defining word used to create temporary base printing
- words.
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-14
-
-
- BEGIN F,I
- Used in a colon-definition in the forms:
- BEGIN . . . flag UNTIL
- or
- BEGIN . . . flag WHILE . . . REPEAT
- BEGIN marks the start of a word sequence for repetitive
- execution. A BEGIN-UNTIL loop will be repeated until flag
- is true. A BEGIN-WHILE-REPEAT loop will be repeated until
- flag is false. The words after UNTIL or REPEAT will be
- executed when either loop is finished. Flag is always
- dropped after being tested.
-
- BELL U
- Send an ASCII 07 (bell) to the current output device.
-
- BINARY U
- Change the current base to binary (base 2).
-
- BL --- c G
- A constant that leaves the ASCII value for a blank (32).
-
- BLANKS addr count --- G
- Fill an area of memory beginning at addr with count blanks.
-
- BLK --- addr F "b-l-k"
- Leave the address of a variable containing the number of the
- mass storage block being interpreted as the input stream. If
- the content is zero, the input stream is taken from the
- text input buffer.
-
- BLOCK n --- addr F
- Leave the address of the first byte in block n. If the
- block is not already in memory, it is transferred from mass
- storage into whichever memory buffer has been least recently
- accessed. If the block occupying that buffer has been
- UPDATEd (i.e. modified), it is rewritten onto mass storage
- before block n is read into the buffer. n is an unsigned
- number. If correct mass storage read or write is not
- possible, an error condition exists.
-
- BMOVE blk1 blk2 n --- U
- Move n blocks starting at blk1 to the region starting at
- blk2. The lowest numbered block of region blk1 is moved
- first.
-
- BMOVE> blk1 blk2 n --- U
- Move n blocks starting at blk1 to the region starting at
- blk2. The highest numbered block of region blk1 is moved
- first.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-15
-
-
- BRANCH G
- The run-time procedure to unconditionally branch. An in-
- line offset is added to the interpretive pointer IP to
- branch ahead or back. BRANCH is compiled by ELSE, AGAIN,
- REPEAT.
-
- BS U
- Send an ASCII 08 (backspace) to the current output device.
-
- BSWAP n1 --- n2 U
- Swap the bytes of the 16-bit value n1.
-
- BUFFER n --- addr F
- Obtain the next block buffer, assigning it to block n. The
- block is not read from mass storage. If the previous
- contents of the buffer has been marked as UPDATEd, it is
- written to mass storage. If correct writing to mass storage
- is not possible, an error condition exists. The address
- left is the first byte within the buffer for data storage.
- n is an unsigned number.
-
- BYE --- U
- Exit UNIFORTH and return to your operating system, closing
- the current file in the process.
-
- C! n addr --- F "c-store"
- Store the least significant 8-bits of n at addr.
-
- C, n --- G
- Store 8 bits of n into the next available dictionary byte,
- advancing the dictionary pointer by one.
-
- C/L --- n G
- Leave the number of characters per line (64).
-
- C@ addr --- byte F "c-fetch"
- Leave on the stack the contents of the byte at addr (with
- the higher bits zero, in a 16-bit field).
-
- CARRAY n --- U
- A defining word used in the form:
- n CARRAY <name>
- create a buffer n bytes long (but not preset to zero). When
- <name> is subsequently executed, it leaves the address of
- the first element.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-16
-
-
- CASE U,I
- A multiple-IF statement used in the form:
- CASE
- n1 =: . . . ;;
- n2 >: . . . ;;
- n3 <: . . . ;;
- NOCASE =: . . . ;;
- CASEND
- It requires a testing value on the stack (it will be removed
- by CASE). n1, n2, ... are comparison value. If the testing
- value is equal to, less than or greater than any of the set
- (n1,n2,...), then the words following the corresponding =:,
- <: or >: are executed, followed by a branch to CASEND.
- NOCASE is an optional test to satisfy all non-tested values.
-
- CASEND U,I
- The terminating statement for CASE. Drops the tested value
- from the stack. See CASE.
-
- CBLIST n1 n2 --- U
- List all blocks between n1 and n2 inclusive, one at a time.
- To list the next block, hit any key. To terminate the
- listing abnormally, enter the escape key.
-
- CDUMP addr n --- U
- Dump n bytes starting at addr in hex format. Sixteen bytes
- are listed per line, followed by their ASCII equivalences.
- Non-printing ASCII characters are indicated by periods. You
- can terminate abnormally by striking any key.
-
- CHANA --- U
- Make channel A the current default file channel.
-
- CHANB --- U
- Make channel B the current default file channel.
-
- CLKADR --- adr U
- The starting address of the 6-byte date and time buffer.
-
- CLOSE --- U
- Close the current file.
-
- CLR-BLK n --- U
- Fill block n with blanks, and put a ;S at its beginning.
-
- CMOVE addr1 addr2 n --- F "c-move"
- Move n bytes beginning at address addr1 to addr2. The
- contents of addr1 are moved first proceeding toward high
- memory. If n is zero or negative nothing is moved.
-
- CMOVE> adr1 adr2 n --- F
- Move n bytes beginning at address adr1 to adr2. The
- contents of adr1 are moved first preceeding from the end of
- the buffer toward low memory.
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-17
-
-
-
- CMPS adr1 adr2 cnt --- f U
- Compare the string starting at adr1 to the string at adr2,
- each with length cnt bytes. If str1 is less than str2,
- leave -1 ; if str1 is equal to str2, leave zero ; if str1 is
- greater than str2, leave one.
-
- CODE F,I
- A defining word used in the form:
- CODE <name> . . . END-CODE
- Create a dictionary entry for <name>, and set execution
- mode. Words thus compiled are called 'code-definitions'.
- Used in creating assembly language routines.
-
- COLD G
- The cold start procedure to adjust the dictionary pointer to
- the initial settings and restart via ABORT.
-
- COMPILE F,C
- When a word containing COMPILE executes, the 16-bit value
- following the compilation address of COMPILE is copied
- (compiled) into the dictionary. That is, COMPILE DUP will
- copy the compilation address of DUP.
-
- CONSTANT n --- F
- A defining word used in the form:
- n CONSTANT <name>
- to create a dictionary entry for <name>, leaving n in its
- parameter field. When <name> is later executed, n will be
- left on the stack.
-
- CONTEXT --- addr F
- A user variable containing a pointer to the vocabulary
- within which dictionary searches will first begin.
-
- CONTROLS? adr cnt --- f U
- Check the buffer starting at adr with length cnt bytes. If
- there are any control characters (ASCII 31 or less) in the
- buffer, leave a 1 on the stack; otherwise, leave a 0.
-
- CONVERT d1 addr1 --- d2 addr2 F
- Convert the ASCII text beginning at addr1+1 with regard to
- BASE. The new value is accumulated into double number d1,
- being left as d2. Addr2 is the address of the first
- unconvertable digit. Used by NUMBER.
-
- COPY n1 n2 --- U
- Copy block n1 into block n2.
-
- COPYATOB n1 n2 --- U
- Copy block n1 from channel A to block n2 in channel B.
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-18
-
-
- COUNT addr --- addr+1 n F
- Leave the address addr+1 and the character count of text
- beginning at addr. The first byte at addr must contain the
- character count n. Range of n is {0..255}.
-
- CR F "c-r"
- Cause a carriage-return and line-feed to occur at the
- current output device.
-
- CREATE F
- A defining word used in the form:
- CREATE <name>
- to create a dictionary entry for <name>, without allocating
- any parameter field memory. When <name> is subsequently
- executed, the address of the first byte of <name>'s
- parameter field is left on the stack.
-
- CSP --- addr G
- A user variable temporarily storing the stack pointer
- position, for compilation error checking.
-
- CURRENT --- addr F
- A variable containing the current vocabulary pointer.
-
- D+ d1 d2 --- d3 F "d-plus"
- Leave the arithmetic sum of d1 and d2.
-
- D- d1 d2 --- d3 F "d-minus"
- Subtract d2 from d1 and leave the difference d3.
-
- D>S d --- n G
- Truncate the double precision value to its single precision
- equivalent. Same as DROP.
-
- D. d --- F "d-dot"
- Display d converted according to BASE in a free-field
- format, with one trailing blank. Display the sign only if
- negative.
-
- D.R d n --- F "d-dot-r"
- Display d converted according to BASE, right aligned in an n
- character field. Display the sign only if negative.
-
- D0< d --- flag U
- Leave true if d is less than zero.
-
- D0= d --- flag F "d-zero-equals"
- Leave true if d is zero.
-
- D< d1 d2 --- flag F "d-less"
- True if d1 is less than d2. "d-less"
-
- D= d1 d2 --- flag F "d-equal"
- True is d1 equals d2.
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-19
-
-
-
- DABS d1 --- d2 F "d-abs"
- Leave as a positive double number d2, the absolute value of
- a double number, d1. {0..2,147,483,647}
-
- DECIMAL F
-
- Set the input-output numeric conversion base to ten.
-
- DEFINITIONS F
- Used in the form:
- cccc DEFINITIONS
- Set the CURRENT vocabulary to the CONTEXT vocabulary. In
- the example, executing vocabulary name ccc made it the
- CONTEXT vocabulary and executing DEFINITIONS made both
- specify vocabulary cccc.
-
- DELETE --- U
- When used in the form:
- DELETE <fname>
- removes the file from the current directory.
-
- DEPTH --- n F
- Leave the number of the quantity of 16-bit values contained
- in the data stack, before n was added.
-
- DIGIT c n1 --- n2 tf (ok) G
- c n1 --- ff (bad)
- Converts the ASCII character c (using base n1) to its binary
- equivalent n2, accompanied by a true flag. If the
- conversion is invalid, leaves only a false flag.
-
- DLITERAL d --- d (executing) G
- d --- (compiling)
- If compiling, compile a stack double number into a literal.
- Later execution of the definition containing the literal
- will push it to the stack. If executing, the number will
- remain on the stack.
-
- DMATRIX U
- A defining word used in the form:
- n1 n2 DMATRIX <name>
- to create a dictionary entry for <name>, making a double
- precision matrix n1*n2*2 cells in length, presetting all
- elements to zero. When <name> is later executed, it uses
- the top stack parameter as the column number {0..n2-1} and
- the second stack parameter as the row number {0..n1-1}, and
- returns the address of that element.
-
- DMAX d1 d2 --- d3 F "d-max"
- Leave the larger of two double numbers.
-
- DMIN d1 d2 --- d3 F "d-min"
- Leave the smaller of two double numbers.
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-20
-
-
-
- DNEGATE d --- -d F "d-negate"
- Leave the double number two's complement of a double number,
- i.e., the difference 0 less d.
-
- DO n1 n2 --- F,I
- Use in a colon-definition:
- DO . . . LOOP
- or
- DO . . . +LOOP
- Begin a loop which will terminate based on control
- parameters. The loop index begins at n2, and terminates
- based on the limit n1. At LOOP or +LOOP, the index is
- modified by a positive or negative value. The range of a
- DO-LOOP is determined by the terminating word. DO-LOOP may
- be nested.
-
- DOES> F,I,C "does"
- Define the run-time action of a word created by a high-level
- defining word. Used in the form:
- : <name> . . . CREATE . . . DOES> . . . ;
- and then <name> <namex>
- Marks the termination of the defining part of the defining
- word <name> and begins the definition of the run time action
- for words that will later be defined by <name>. On
- execution of <namex> the sequence of words between DOES> and
- ; will be executed, with the address of <namex>'s parameter
- field on the stack.
-
- DP --- addr G
- A user variable, the dictionary pointer, which contains the
- address of the next free memory location above the
- dictionary. The value may be read by HERE and altered by
- ALLOT.
-
- DPL --- addr G
- A user variable containing the number of digits to the right
- of the decimal on floating point input.
-
- DROP n --- F
- Drop the top number from the stack.
-
- DTOR --- x1 U
- A constant containing the conversion factor from degrees to
- radians.
-
- DU< ud1 ud2 --- flag F "d-u-less"
- True if ud1 is less than ud2. Both numbers are unsigned.
-
- DUMP addr n --- G
- Dump n cells starting at addr. Eight cells are listed per
- output line in the current base. The dump can be terminated
- abnormally by striking any key.
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-21
-
-
- DUP n --- n n F
- Leave a copy of the top stack number.
-
- DVECTOR U
- A defining word used in the form:
- n DVECTOR <name>
- to create a dictionary entry for <name> and make a double
- precision vector, preset to zero. When <name> is later
- executed, it uses the top stack value as an index and
- returns the corresponding element address <stgadr+2*value>.
-
- E. x --- U
- Print floating point number in free-format exponent form.
-
- E- n1 --- n2 U
- Subtract the current element size from the top stack value.
-
- E+ n1 --- n2 U
- Add the current element size to the top stack value.
-
- EDIT n --- U
- Start editing block (screen) number n.
-
- EDITOR U
- The name of the video editor vocabulary.
-
- EI+ n1 --- n2 U
- Add the loop index*element size to the top stack value.
-
- EI+! n1 adr --- U
- Add the loopindex*elementsize to the address, and store n1
- at the resultant address.
-
- EI+@ n1 --- n2 U
- Add the loopindex*elementsize to the top stack value. Using
- the result as an address, fetch the contents.
-
- EI- n1 --- n2 U
- Subtract the loopindex*elementsize from the top stack value.
-
- ELSE F,I
- Used in a colon-definition in the form:
- IF . . . ELSE . . . THEN
- ELSE executes after the true part following IF. ELSE forces
- execution to skip till just after THEN. It has no effect on
- the stack. (See IF)
-
- EMIT char --- F
- Transmit character to the current output device.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-22
-
-
- EMPTY-BUFFERS F
- Mark all block buffers as empty, without necessarily
- affecting their actual contents. UPDATEd blocks are not
- written to mass storage.
-
- ENCLOSE adr1 c --- adr1 n1 n2 n3 KERNEL G
- The text scanning primitive used by WORD. From the text
- address adr1 and an ASCII delimiting character c, ENCLOSE
- determinines the byte offset to the first non-delimiter
- character n1, the offset to the first delimiter after the
- text n2, and the offset to the first character not included.
- This procedure will not process past an ASCII 'null',
- treating it as an unconditional delimiter.
-
- END-CODE --- F
- Terminate a machine-code definition.
-
- ER1 --- U
- An error handling word.
-
- ER2 --- U
- An error handling word.
-
- ER3 --- U
- An error handling word.
-
- ERASE addr nbytes --- G
- Clear a region of memory to zero starting at addr.
-
- ERCODE --- n U
- Return the last disk error code.
-
- ERROR line --- G
- Execute error notification and possible restart of system.
-
- ES --- n U
- Leave the element size of the current system (16-bit = 2).
-
- EXCHANGE n1 n2 --- U
- Exchange the contents of disk blocks n1 and n2.
-
- EXECUTE addr --- F
- Execute the dictionary entry whose code field address is on
- the stack.
-
- EXIT F,C
- When compiled within a colon-defintion, terminate execution
- of that definition, at that point. May not be used within a
- DO-LOOP.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-23
-
-
- EXPECT addr n --- F
- Transfer characters from the terminal beginning at addr,
- upward, until a "return" or the count of n has been
- received. Take no action for n less than or equal to zero.
- The number of characters received is stored in variable
- SPAN.
-
- EXPECTBL addr n --- U
- Same as EXPECT except leaves a blank (ASCII 32) after the
- entered string.
-
- EXTEND n --- U
- Extend the current file by n blocks, setting each to blank
- except for a ";S" in the first bytes.
-
- F* x1 x2 --- x3 U
- Multiply x1 by x2, leaving the floating point result x3.
-
- F/ x1 x2 --- x3 U
- Divide x1 by x2, leaving the floating point result x3.
-
- F+ x1 x2 --- x3 U
- Add x1 to x3, leaving the floating point result x3.
-
- F- x1 x2 --- x3 U
- Subtract x2 from x1, leaving the floating point result x3.
-
- F. x1 --- U
- Print floating point number in free format. #digits printed
- is limited by constant FPSIG.
-
- FACOS x1 --- x2 U
- Take the arc-cosine of an angle (x2 in radians).
-
- FALSE --- n U
- Return the value of a false flag (0).
-
- FASIN x1 --- x2 U
- Take the arc-sine of an angle (x2 in radians).
-
- FATAN x1 --- x2 U
- Take the arc-tangent of an angle (x2 in radians).
-
- FCB --- n1 U
- Leave the address of the current File Control Block.
-
- FCONSTANT x --- U
- A defining word used in the form:
- n FCONSTANT <name>
- To create a dictionary entry for <name>, leaving the
- floating point constant x in its parameter field. When
- <name> is later executed, n will be left on the stack.
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-24
-
-
- FCOS x1 --- x2 U
- Take the cosine of an angle (radians).
-
- FENCE --- G
- A user variable containing an address below which FORGETting
- is trapped. To forget below this point, the user must alter
- the contents of FENCE.
-
- FEXP x1 --- x2 U
- Raise x1 to the e power.
-
- FILESTATUS --- U
- List on the console information about the current file.
-
- FILL addr n byte --- F
- Fill memory beginning at address with a sequence of n copies
- of byte. If the quantity n is less than or equal to zero,
- take no action.
-
- FIND --- addr U
- Leave the compilation address of the next word name, which
- is accepted from then input stream. If that word cannot be
- found in the dictionary after a search, leave zero.
-
- FIRST --- n G
- A variable that leaves the address of the first (lowest)
- block buffer.
-
- FIX x1 --- d1 U
- Convert floating point x1 to a double precision integer d1.
-
- FLD --- addr G
- A user variable for control of number output field width.
-
- FLN x1 --- x2 U
- Take the natural (base e) logarithm of x1.
-
- FLOAT d1 --- x1 U
- Convert double precision integer d1 to the equivalent
- floating point value x1.
-
- FLOG2 x1 --- x2 U
- Take the log base 2 of x1.
-
- FLOG10 x1 --- x2 U
- Take the common logarithm (base 10) of x1.
-
- FLUSH --- U,G
- A synonym for SAVE-BUFFERS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-25
-
-
- FMATRIX n1 n2 --- U
- A defining word used in the form:
- n1 n2 FMATRIX <name>
- to create a dictionary entry for <name>, making a 2-
- dimensional floating point matrix n1*n2 elements in length.
- When <name> is later executed, it uses the top stack
- parameter as the column number {0..n2-1} and the second
- stack parameter as the row number {0..n1-1}, and returns the
- address of that element.
-
- FNEGATE x1 --- -x1 U
- Change the sign of the floating point number x1.
-
- FORGET F
- Execute in the form:
- FORGET <name>
- Delete from the dictionary <name> and all words added to the
- dictionary after <name>. Failure to find <name> is an error
- condition.
-
- FORM U
- Send an ASCII 12 (formfeed) to the current output devices.
-
- FORTH F
- The name of the primary vocabulary. Execution makes FORTH
- the CONTEXT vocabulary. Until additional user vocabularies
- are defined, new user definitions become a part of FORTH.
- FORTH is immediate, so it will execute during the creation
- of a colon-definition, to select this vocabulary at compile
- time.
-
- FSIN x1 --- x2 U
- Take the sine of an angle (radians).
-
- FSQRT x1 --- x2 U
- Take the square root of x1.
-
- FTAN x1 --- x2 U
- Take the tangent of an angle (radians).
-
- FVARIABLE --- U
- A defining word executed in the form:
- FVARIABLE <name>
- to create a dictionary entry for <name> and allot space for
- one floating-point element in its body. The application
- must initialize the stored value. When <name> is later
- executed, it will place the storage address on the stack.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-26
-
-
- FVECTOR n --- U
- A defining word used in the form:
- n FVECTOR <name>
- to create a dictionary entry for <name> ana allot space for
- n floating-point elements (a one-dimensional vector). When
- name is later executed, it uses the top stack value as an
- index {0..n-1} into the array and returns the address of
- that element.
-
- GETBUF blk# --- bufadr flag U
- Examine the block buffers, and return the address of one of
- them. If that buffer has been updated, flag=true.
-
- GETNUM --- val U
- Interactively bring in the next number from the keyboard.
-
- H' --- n U
- Interpret the next number in hex, regardless of the current
- base.
-
- H. n --- U
- Print the top stack value in hexadecimal, regardless of the
- current base.
-
- HASH stradr vocptr --- stradr vocthd U
- Used for "hashing" the dictionary into 4 threads.
-
- HDUMP addr n --- U
- Same as DUMP, but in hexadecimal regardless of the current
- base.
-
- HERE --- addr F
- Return the address of the next available dictionary
- location.
-
- HEX G
- Change the current numberic input base to hexadecimal (base
- 16).
-
- HLD --- addr G
- A user variable that holds the address of the latest
- character of text during numeric output conversion.
-
- HOLD char --- F
- Insert char into a pictured numeric output string. May only
- be used between <# and #>.
-
- I --- n F,C
- Copy the loop index onto the data stack. Can only be used
- in the forms
- DO . . . I . . . LOOP
- or
- DO . . . I . . . +LOOP
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-27
-
-
- I+ n1 --- n2 U
- Add index I to the top stack value.
-
- I- n1 --- n2 U,C
- Subtract index I from the top stack value.
-
- ID. addr --- G
- Print a definition's name from its name field address.
-
- IF flag --- F,I
- Used in a colon-definition in the forms:
- flag IF . . . ELSE . . . THEN
- or
- flag IF . . . THEN
- If flag is true, the words following IF are executed and the
- words following ELSE are skipped. The ELSE part is
- optional. If flag is false, words between IF and ELSE, or
- between IF and THEN (when no ELSE is used), are skipped.
- IF-ELSE-THEN conditionals may be nested.
-
- IMMEDIATE F
- Mark the most recently made dictionary entry as a word which
- will be executed when encountered during compilation rather
- than compiled.
-
- INCLUDE n1 --- U
- Used in the form:
- INCLUDE <fname>
- Close the current file, saving any updated blocks. Switch
- to file fname, load block 01, and then return to the
- original file. Only one level of nesting is allowed.
-
- INDEX n1 n2 --- G
- Print the first line of each screen over the range n1 to n2
- inclusive. This is used to view the comment lines of an
- area of text on disk screens.
-
- INDGEN addr n --- U
- Fill n cells starting at addr with the cell number. That
- is, (addr)=0, (addr+2)=1, (addr+4)=2, ... Used to preset an
- array to its element numbers.
-
- INTERPRET G
- The outer text interpreter which sequentially executes or
- compiles text from the input stream (terminal or disk)
- depending on STATE. If the word name cannot be found after
- a search of CONTEXT and CURRENT, then it is converted to a
- number according to the current base. That also failing, an
- error message echoing the name with a "?" will be given.
-
- IO! val port --- U
- Store the 16-bit value val into port.
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-28
-
-
- IO@ port --- val U
- Fetch a 16-bit value from a port.
-
- IOBYTE --- addr U
- A variable containing the printer/terminal output flag.
-
- IOC! val port --- U
- Store the 8-bit value val into port.
-
- IOC@ port --- val U
- Fetch an 8-bit value from a port.
-
- J --- n F,C
- Return the index of the next outer loop. May be used only
- within a nested DO-LOOP in the form:
- DO . . . DO . . . J . . . LOOP . . . LOOP
-
- KEY --- char F
- Leave the ASCII value of the next available character from
- then current input device.
-
- LATEST --- addr G
- Leave the name field address of the topmost word in the
- CURRENT vocabulary.
-
- LEAVE F
- Force immediate termination of a DO-LOOP. Execution
- continues after the next LOOP or +LOOP.
-
- LF U
- Send an ASCII 10 (linefeed) to the current output device.
-
- LIMIT --- n G
- A variable leaving the address just above the highest memory
- available for a disk buffer. Usually this is the highest
- system memory.
-
- LINE n1 --- n2 U
- Leave the buffer address n2 of the n1th line in the current
- screen (pointed to by SCR).
-
- LIST n --- F
- List the ASCII symbolic contents of screen n on the current
- output device, setting SCR to contain n. n is unsigned.
-
- LIT --- n G
- Within a colon-definition, LIT is automatically compiled
- before each 16-bit literal number encountered in input text.
- Later execution of LIT causes the contents of the next
- dictionary address to be pushed to the stack.
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-29
-
-
- LITERAL n --- F,I
- If compiling, then compile the stack value n as a 16-bit
- literal, which when later executed, will leave n on the
- stack.
-
- LOAD n --- F
- Begin interpretation of screen n by making it the input
- stream; preserve the locators of the present input stream
- (from >IN and BLK). If interpretation is not terminated
- explicitly it will be terminated when the input stream is
- exhausted. Control then returns to the input stream
- containing LOAD, determined by the input stream locators >IN
- and BLK.
-
- LOOP F,I
- Increment the DO-LOOP index by one, terminating the loop
- when the new index crosses the boundary between limit-1 and
- limit.
-
- LOWUP --- adr U
- A variable containing the flag that determines if input text
- is to be converted to upper case before searching the
- dictionary.
-
- M/MOD d n1 --- n2 n3 G
- A mixed magnitude math operator which leaves the signed
- remainder n2 and signed quotient n3, from a double number
- dividend and divisor n1. The remainder takes its sign from
- the dividend.
-
- MAKE --- U
- Used in the form:
- MAKE <fname>
- Create a new file called fname. After MAKE is executed, you
- are left in the new file.
-
- MAKE-CHAN --- U
- Make a new FCB/channel for file access.
-
- MATCH adr1 n1 adr2 n2 --- n3 U
- Find the string starting at adr2 (n2 bytes long) in the
- larger string starting at adr1 (n1 bytes long, n1>n2). If a
- match occurs, leave the address (in buffer adr1) of the
- first correct character; otherwise, leave 0.
-
- MATRIX U
- A defining word used in the form:
- n1 n2 MATRIX <name>
- to create a dictionary entry for <name>, making a 2-
- dimensional array (matrix) n1*n2 cells in length, presetting
- all elements to zero. When <name> is later executed, it
- uses the top stack parameter as the column number {0..n2-1}
- and the second stack parameter as the row number {0..n1-1},
- and returns the address of that element.
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-30
-
-
-
- MAX n1 n2 --- n3 F "max"
- Leave the greater of two numbers.
-
- MAXI --- n1 U,C
- Copy the maximum iteration counter of the current DO-LOOP
- from the return stack to the data stack.
-
- MCOPY n1 n2 n3 --- U
- Copy n3 blocks from channel A (starting at block n1) to
- channel B (starting at block n2).
-
- MESSAGE n --- G
- Print on the selected output device the text of line n
- relative to screen 200 of drive 0. n may be positive or
- negative. MESSAGE may be used to print incidental text such
- as report headers. If WARNING is zero, the message will
- simply be printed as a number (disk not available).
-
- MIN n1 n2 --- n2 F "min"
- Leave the lesser of two numbers.
-
- MOD n1 n2 --- n3 F "mod"
- Divide n1 by n2, leaving the remainder n3, with the same
- sign as n1.
-
- MOVE addr1 addr2 n --- F
- Move the specified quantity n of 16-bit memory cells
- beginning at addr1 into memory at addr2. The contents of
- addr1 is moved first. If n is negative or zero, nothing is
- moved.
-
- MS n --- G
- Delay n milliseconds before continuing execution.
-
- MSGBLK --- adr U
- Used by MESSAGE. A variable containing the starting block
- number on which messages are stored.
-
- NAME> adr1 --- adr2 F
- Convert the name field address adr1 of a word into its
- corresponding code field address adr2.
-
- NEGATE n --- -n F
- Leave the two's complement of a number, i.e., the difference
- of 0 less n.
-
- NOCASE n1 --- n1 n1 U
- Same as DUP, used in CASE statement.
-
- NOOP --- G
- Perform no operation whatsoever.
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-31
-
-
- NOT n1 --- n2 U
- Perform the one's complement of n1.
-
- NUMBER addr --- d G
- Convert a character string left at addr with a preceeding
- count, to a signed double number, using the current numeric
- base. If numeric conversion is not possible, an error
- message will be given.
-
- O' --- n U
- Interpret the next number in base 8, regardless of the
- current base.
-
- O. n --- U
- Print n in octal, regardless of the current base.
-
- OCTAL U
- Change the current numeric conversion base to octal (base
- 8).
-
- ODUMP addr n ----- U
- Same as DUMP, except output is in octal, regardless of
- current base.
-
- OFFSET --- addr U
- A user variable which contains the sector offset from the
- beginning of the current drive. This offset is added to all
- sector requests. Note the difference between this
- definition and the FIG definition.
-
- OPEN --- U
- Used in the form:
- OPEN <fname>
- This word attempts to open file fname for future I/O. If
- fname does not currently exist, UNIFORTH will query you
- about creating it.
-
- OR n1 n2 --- n3 F
- Leave the bitwise inclusive-or of two numbers.
-
- OUT --- addr G
- A user variable that contains a value incremented by EMIT.
- The user may alter and examine OUT to control display
- formatting.
-
- OVER n1 n2 --- n1 n2 n1 F
- Leave a copy of the second number on the stack.
-
- P+ n1 n2 n3 n4 --- n5 n6 U
- Perform addition of an ordered pair. The results are:
- n5=n1+n3 n6=n2+n4
- Used in the editor for offsets on x,y cursor positioning.
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-32
-
-
- PAD --- addr F
- The address of a scratch area used to hold character strings
- for intermediate processing. The minimum capacity of PAD is
- 64 characters (addr through addr+63).
-
- PICK n1 --- n2 SYSTEM block 25 F
- Return a copy of the n1th stack value, not counting n1
- itself. Aero relative: 1 PICK is equivalent to OVER.
-
- PLUS? --- flag U
- A flag for Z.R. If PLUS? is nonzero, Z.R will include a
- plus sign preceding all positive numbers.
-
- PRECIS --- adr U
- A USER variable containing the precision flag (0=16, 1=32,
- integer; 2=32-bit floating) of the last number converted.
-
- PREMIT b --- U
- Send a single ASCII character to the printer.
-
- PREV --- addr G
- A variable containing the address of the disk buffer most
- recently referenced. The UPDATE commands marks this buffer
- to be later written to disk.
-
- PRINTER U
- Select the printer to be the current output device.
-
- QUERY F
- Accept input of up to 80 characters (or until a 'return')
- from the operator's terminal, into the terminal input
- buffer. WORD may be used to accept text from this buffer as
- the input stream, by setting >IN and BLK to zero.
-
- QUIT F
- Clear the return stack, setting execution mode, and return
- control to the terminal. No message is given.
-
- R# --- addr G
- A user variable which may contain the location of an editing
- cursor, or ther file related function.
-
- R/W addr blk f --- G
- The primitive block-oriented disk read/write routine. Addr
- specified the source or destination block buffer, blk is the
- sequential number of the referenced block, and f is a flag
- (f=0, write; f=1, read). R/W determines the location on
- mass storage, performs the read/write and all error
- checking.
-
- R> --- n F,C
- Transfer n from the return stack to the data stack. "r-
- from"
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-33
-
-
- R0 --- addr G
- A user variable containing the initial location of the
- return stack. "r-zero" See RP!
-
- R@ --- n F,C
- Copy the number on the top of the return stack to the data
- stack. "r-fetch"
-
- REMSPACE G
- Print the remaining space (in bytes) available for
- dictionary entries.
-
- REPEAT F,I,C
- Used in a colon-definition in the form:
- BEGIN . . . WHILE . . . REPEAT
- At run-time, REPEAT returns to just after the corresponding
- BEGIN.
-
- ROLL n --- F
- Extract the n-th stack value to the top of the stack, not
- counting n itself, moving the remaining values into the
- vacated position. An error condition results for n less
- than one. 3 ROLL is the same as ROT. 1 ROLL is a null
- operation.
-
- ROT n1 n2 n3 --- n2 n3 n1 F
- Rotate the top three values, bringing the deepest to the
- top. "rote"
-
- RP@ --- n1 G
- Copy the address that the return stack pointer is pointing
- to onto the data stack.
-
- RP! G
- Initialize the return stack pointer from user variable R0.
-
- S>D n --- d G
- Sign extend a single 16-bit number to form a double 32-bit
- number.
-
- S0 --- addr G
- A user variable that contains the initial value for the
- stack pointer. "s-zero" See SP!
-
- SAVE-BUFFERS F
- Write all blocks to mass storage that have been flagged as
- UPDATEd. An error condition results if mass storage writing
- is not completed. A synonym is FLUSH.
-
- SCR --- addr F
- Leave the address of a variable containing the number of the
- screen most recently listed. "s-c-r"
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-34
-
-
- SHIFT n1 n2 --- n3 U
- Shift n1 by n2 bits right or left. If n2 is negative, the
- shift is to the left; if positive, to the right.
-
- SHOW n1 n2 --- G
- List all blocks at least including n1 through n2 in TRIAD
- form.
-
- SHUCK adr1 adr2 --- U
- Remove all words following adr1 in the vocabulary pointed to
- by adr2.
-
- SIGN n --- F,C
- Insert the ASCII "-" (minus sign) into the pictured numeric
- output string, if n is negative.
-
- SIGNON U
- A word that prints the signon message of UNIFORTH and then
- enters ABORT.
-
- SMUDGE G
- Used during word definition to toggle the "smudge bit" in a
- definition's name field. This prevents an uncompleted
- definition from being found during dictionary searches,
- until compiling is completed without error.
-
- SP! G
- Initialize the data stack pointer from user variable S0.
-
- SP@ --- addr G
- Return the address of the data stack position (that is, the
- value of the stack pointer) to the top of the stack, as it
- was before SP@ was executed.
-
- SPACE F
- Transmit an ASCII blank to the current output device.
-
- SPACES n --- F
- Transmit n spaces to the current output device. Take no
- action for n of zero of less.
-
- SPAN --- adr F
- A variable containing the number of characters input during
- the last EXPECT.
-
- SS*D n1 n2 --- d G
- A mixed magnitude math operation which leaves the double
- number signed product of two signed integers. Warning:
- this name may be changed to S*SD in future releases.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-35
-
-
- STATE --- addr F
- Leave the address of the variable containing the compilation
- state. A non-zero content indicates compilation is
- occurring, but the value itself may be installation
- dependent.
-
- SUBROUTINE U
- A defining word used in the form:
- SUBROUTINE <name> . . . END-CODE
- to create a machine-language word that is only callable from
- other machine-language words. It has no code field address.
- Executing <name> at a later time puts the address of the
- first machine-code instruction on the stack. <name> would
- be used like:
- CODE XX . . . <name> CALL, . . . <name> JMP, . . . END-CODE
- by another word.
-
- SWAP n1 n2 --- n2 n1 F
- Exchange the top two stack values.
-
- TERMINAL U
- Select the system console for further output.
-
- THEN F,I
- Used in a colon-definition in the form:
- IF . . . ELSE . . . THEN
- or
- IF . . . THEN
- THEN is the point where execution resumes after ELSE or IF
- (when no ELSE is present).
-
- TIB --- addr G
- A user variable containing the address of the terminal input
- buffer.
-
- TLOAD --- U
- Load the current file as a text-oriented file. (May be
- called FLOAD in your system).
-
- TOGGLE addr b --- G
- Complement the contents of addr by the bit pattern b.
-
- TRACE --- addr U
- Flag to turn the "unravel" trace on (1) or off(0).
-
- TRAVERSE adr1 n --- adr2 G
- Move across the name field of a definition. adr1 is the
- address of either the length byte or the last letter. If
- n=1, the motion is toward high memory; if n=-1, the motion
- is toward low memory. The adr2 resulting the the address of
- the other end of the name.
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-36
-
-
- TRIAD n --- G
- Display on the selected output device the three screens that
- include n, beginning with a screen that is evenly divisible
- by 3.
-
-
- TRUE --- n U
- A constant containing the value of a true flag (=-1).
-
- TRUNK --- adr F
- A variable containing the address of the trunk vocabulary.
-
- TURNKEY --- adr U
- The address in the kernel COLD routine of the CFA of the
- word SIGNON. By replacing SIGNON with a user-defined
- function, you can autostart any word upon coldstart.
-
- TYPE addr n --- F
- Transmit n characters beginning at address to the current
- output device. No action takes place for n less than or
- equal to zero.
-
- U. un --- F
- Display un converted according to BASE as an unsigned
- number, in a free-field format, with one trailing blank. "u-
- dot"
-
- U2/ ud1 --- ud2 F
- Divide unsigned double by 2.
-
- U< un1 un2 --- flag F
- Leave the flag representing the magnitude comparison of un1
- < un2, where un1 and un2 are treated at 16-bit unsigned
- integers. "u-less-than"
-
- U<= un1 un2 --- flag U
- True if un1 is less than or equal to un2, unsigned.
-
- U> un1 un2 --- flag U
- True if un1 is greater than un2, unsigned.
-
- U>= un1 un2 --- flag U
- True if un1 is greater than or equal to un2, unsigned.
-
- UM/MOD ud1 un2 --- un3 un4 F
- Perform the unsigned division of double number ud1 by ud2,
- leaving the remainder un3 and quotient un4. All values are
- unsigned.
-
- UM/MODD ud1 u2 --- u3 ud4 G
- An unsigned mixed magnitude math operation which leaves a
- double quotient ud4 and remainder u3, from a double dividend
- ud1 and single divisor u2.
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-37
-
-
- UNPRINT U
- Prints an informative message for LIST and INDEX.
-
- UNRAVEL --- U
- Trace the return stack nesting, then execute QUIT.
-
- UNTIL flag --- F,I
- Within a colon-definition, mark the end of a BEGIN-UNTIL
- loop, which will terminate based on a flag. If flag is
- true, the loop is terminated. If flag is false, execution
- returns to the first word after BEGIN. BEGIN-UNTIL
- structures may be nested.
-
- UPPER adr cnt -- U
- Convert the string to upper case ASCII.
-
- UPDATE F
- Mark the most recently referenced block as modified. The
- block will subsequently be automatically transferred to mass
- storage should its memory buffer be needed for storage of a
- different block, or upon execution of SAVE-BUFFERS.
-
- US>D u --- ud U
- Convert the unsigned 16-bit integer to 32-bit form.
-
- USE --- addr G
- A variable containing the address of the block buffer to use
- next, or in other words, the one least recently written.
-
- USER n --- G
- A defining word used in the form:
- n USER cccc
- which creates a user variable cccc. The parameter field of
- cccc contains n as a fixed offset relative to the user
- pointer register UP for this user variable. When cccc is
- later executed, it places the sum of its offset and the user
- area base address on the stack as the storage address of
- that particular variable.
-
- USS*D un1 un2 --- ud3 F
- Perform an unsigned multiplication of un1 by un2, leaving
- the double number product ud3. All values are unsigned. "u-
- times"
-
- VARIABLE F
- A defining word executed in the form:
- VARIABLE <name>
- to create a dictionary entry for <name> and allot two bytes
- for storage in the parameter field. The application must
- initialize the stored value. When <name> is later executed,
- it will place the storage address on the stack.
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-38
-
-
- VECTOR U
- A defining word used in the form:
- n VECTOR <name>
- to create a dictionary entry for <name>, thereby making a
- vector n cells long, presetting all elements to zero. When
- <name> is later executed, it uses the top stack value as an
- index into the array and returns the address of that
- element. {0..n-1}
-
- WORDS G
- List the names of the definitions in the context vocabulary.
- The actuation of any key on the terminal will stop the list.
-
- VOC-LINK --- addr G
- A user variable containing the address of a field in the
- definition of the most recently created vocabulary. All
- vocabulary names are linked by these fields to allow control
- for FORGETing through multiple vocabularies.
-
- VOCABULARY F
- A defining word used in the form:
- VOCABULARY <name>
- to create a vocabulary definition <name>. Subsequent use of
- <name> will make it the CONTEXT vocabulary which is searched
- first by INTERPRET. The sequence "<name> DEFINITIONS" will
- also make <name> the CURRENT vocabulary into which new
- definitions are placed. By convention, vocabulary names are
- to be declared IMMEDIATE. See VOC-LINK.
-
- WARM G
- A warm-start boot entry point. Resets the data stack
- pointer, but does not re-initialize the return stack or
- dictionary pointers.
-
- WARNING --- addr G
- A user variable containing a value controlling messages
- output from ?ERROR or MESSAGE. If WARNING=1, a disk is
- assumed present, and messages are printed relative to block
- 200 of disk drive 0. If it is equal to zero, messages are
- not retrieved from disk; they are just given numbers. If
- WARNING= -1, ?ERROR will execute ABORT.
-
- WHILE flag --- F,I,C
- Used in a colon-definition in the form:
- BEGIN . . . flag WHILE . . . REPEAT
- Select conditional execution based on the flag. On a true
- flag, continue execution through to REPEAT, which then
- returns back to just after BEGIN. On a false flag, skip
- execution to just after REPEAT, exiting the structure.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-39
-
-
- WIDTH --- addr G
- A user variable containing the maximum numbers of letters
- saved in the compilation of a definition's name. It must be
- 1 through 31, with a default value of 31. The name
- character count and its natural characters are saved, up to
- the value in WIDTH. The value may be changed at any time
- within the above limits.
-
- WORD char --- addr F
- Receive characters from the input stream until the non-zero
- delimiting character is encountered or the input stream is
- exhausted, ignoring leading delimiters. The characters are
- stored as a packed string with the character count in the
- first character position. The actual delimiter encountered
- (char or null) is stored at the end of the text but not
- included in the count. If the input stream was exhausted as
- WORD is called, then a zero length will result. The address
- of the beginning of this packed string is left on the stack.
-
- X' --- n U
- Interpret the next number as decimal, regardless of the
- current base.
-
- X. n --- U
- Display the number in decimal, regardless of the current
- base.
-
- XON/XOFF --- adr U
- A variable that turns on/off the ctrl-s/ctrl-q keyboard
- check.
-
- XOR n1 n2 --- n3 F "x-or"
- Leave the bitwise exclusive-or of two numbers.
-
- Y/N --- flag U
- Bring in a yes/no/escape type answer.
-
- Z.R n1 n2 --- U
- Display n1 right justified in n2 columns. Zero fill to the
- left. See PLUS?.
-
- [ F,I "left-bracket"
- End the compilation mode. The text from the input stream is
- subsequently executed. See ].
-
- ['] F
- Immediate form of tick.
-
- [COMPILE] F,I,C "bracket-compile"
- Used in a colon-definition in the form:
- [COMPILE] <name>
- Force compilation of <name>. This allows compilation of an
- IMMEDIATE word when it would otherwise be executed.
-
-
-
-
-
-
-
-
-
-
- UNIFORTH VOCABULARY LIST Page A-40
-
-
- ] F "right-bracket"
- Set the compilation mode. The text from the input stream is
- subsequently compiled. See [.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- əee [.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-